import Vue from 'vue'
import App from './App.vue'
import router from './router'

Vue.config.productionTip = false

// 判断是否在 qiankun 环境中运行
let instance = null
function render(props = {}) {
  const { container, mainAppData, mainAppMethods } = props

  // 将主应用传递的数据挂载到 Vue 原型上
  if (mainAppData) {
    Vue.prototype.$mainAppData = mainAppData
  }
  if (mainAppMethods) {
    Vue.prototype.$mainAppMethods = mainAppMethods
  }

  // 在 qiankun 环境中运行时，需要将应用挂载到指定的容器中
  instance = new Vue({
    router,
    render: h => h(App)
  }).$mount(container ? container.querySelector('#app') : '#app')
}

// 独立运行时
if (!window.__POWERED_BY_QIANKUN__) {
  render()
}

// 导出 qiankun 生命周期钩子
export async function bootstrap() {
  console.log('vue2-sub-app1 bootstraped')
}

export async function mount(props) {
  console.log('vue2-sub-app1 mounted', props)
  
  // 监听全局状态变化
  props.onGlobalStateChange((state, prev) => {
    console.log('子应用1：全局状态发生变化', state, prev)
  })

  // 更新全局状态
  props.setGlobalState({
    user: {
      name: '子应用1用户',
      role: 'user'
    }
  })

  render(props)
}

export async function unmount() {
  console.log('vue2-sub-app1 unmounted')
  instance.$destroy()
  instance = null
} 